/**
 * 合法url
 * @param rule
 * @param value
 * @param callBack
 */
type CallBack = (msg?: any) => void
export function acceptUrlValidator(_: any, value: any, callBack: CallBack) {
  let url = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/[\]@!\$&'\*\+,;=.]+$/
  if (value) {
    if (!url.test(value)) {
      callBack('请输入正确的接收地址')
    } else {
      callBack()
    }
  } else {
    callBack()
  }
}
/**
 * 固定电话
 * @param _
 * @param value
 * @param callback
 */
export function validateTelephone(_: any, value: any, callBack: CallBack) {
  const reg = /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/
  if (!reg.test(value)) {
    callBack(new Error('请输入正确的固话'))
  } else {
    callBack()
  }
}
/**
 * 统一信用社会代码
 * @param _
 * @param value
 * @param callBack
 */
export function validateCreditCode(_: any, value: any, callBack: CallBack) {
  const reg = /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/
  if (!reg.test(value)) {
    callBack(new Error('请输入正确的统一信用代码'))
  } else {
    callBack()
  }
}
/**
 * 手机号码
 * @param str
 * @returns
 */
export function validatePhoneNumber(str: string) {
  const reg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/
  return reg.test(str)
}

/**
 * 手机号码或固定电话
 * @param str
 * @returns
 */
export function validatePhTelNumber(str: string) {
  // 手机号码正则  例如：13723244256
  var isPhone = /^1[3456789]\d{9}$/
  // 固话正则  例如：020-1234567
  var isMob = /^((0\d{2,3})-)?(\d{7,8})$/
  return isPhone.test(str) || isMob.test(str)
}
/**
 * 电子邮箱
 * @param str
 * @returns
 */
export function validateEmail(str: string) {
  const reg = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
  return reg.test(str)
}
/**
 * 邮编
 * @param str
 * @returns
 */
export function validateZipCode(str: string) {
  const reg = /^[1-9][0-9]{5}$/
  return reg.test(str)
}
/**
 * 身份证
 * @param str
 * @returns
 */
export function validateIDCard(str: string) {
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  return reg.test(str)
}
/**
 * 银行卡号
 * @param str
 * @returns
 */
export function validateBank(str: string) {
  const reg = /^([1-9]{1})(\d{14}|\d{18}|\d{15})$/
  return reg.test(str)
}
